PHLEGM v4 - Data-driven Commodore PRG creation checkpoint

PROGRAM now supports creation as well as loading.

Command:
  PROGRAM SAVE <file.prg> [<start> <end>]

Behavior:
- Output is created beneath /data/prg/. A missing .prg suffix is added automatically.
- With no range, the active machine definition supplies the default start address and the source of the end address.
- Current PET/CBM definitions use BASIC text start $0401 and the machine-specific VARTAB pointer as an end-exclusive pointer.
- With an explicit range, start and end are inclusive. This permits saving machine-code or arbitrary writable-RAM regions as PRG images.
- The PRG header layout is taken from the same machine-declared load-address offset, endian, and payload-offset fields used by PROGRAM loading.
- The generated file is written to a temporary path, reopened, byte-verified against emulated memory, then finalized. Existing output of the same name is replaced only after verification.
- Machines must explicitly declare program_saver=commodore-prg; vendor/model identity is never used to infer save support.

Machine declaration fields:
  program_saver=commodore-prg
  program_prg_save_default_start=<address>
  program_prg_save_default_end_mode=exclusive-pointer | inclusive-fixed
  program_prg_save_default_end_pointer=<address>
  program_prg_save_default_end_pointer_endian=little | big
  program_prg_save_default_end=<address>             # inclusive-fixed mode
  program_prg_save_require_writable=true | false

GUI:
  Memory / Program -> PROGRAM - machine program / Commodore PRG -> Create PRG from memory...

Also carried forward in this checkpoint:
- AUDIT is a direct child of the literal Memory / Program parent branch.
- Embedded instruction definitions were bumped so existing installs refresh the GUI/console grammar.
